Cloud computing has three typical service models/layers: Software as a Service (SaaS), Infrastructure as a Service (IaaS), and Platform as a Service (PaaS). SaaS offers applications to end users directly through network. IaaS offers infrastructure resources such as virtual machines, storage and network. PaaS provides a platform that contains application runtime environments (e.g. Java JRE) and related services (e.g. MySQL) such as database and middleware, wherein developers can deploy and run their applications on the platform directly, which greatly reduces the cost and time of managing complex software and hardware. The PaaS layer is often built on top of IaaS layer to take advantage of the infrastructure provisioning services offered by the IaaS layer. The PaaS layer usually consumes a large amount of resources from the IaaS layer including virtual machines (VMs), networks and storage.
In terms of deployment model, cloud computing utilizes three basic types of cloud: private cloud, public cloud and hybrid cloud. A private cloud is cloud infrastructure operated only for a single organization. A private cloud can be on-premise or hosted externally by a third-party vendor. The latter is often referred as a virtual private cloud (VPC). A public cloud's resources are generally available to the general public and users share the infrastructure. A hybrid cloud is a combination of private and public clouds, which allows enterprises to extend their private, on-premises clouds into the public cloud. Regardless of the deployment model chosen, an enterprise may choose to use hybrid cloud instances for at least the following reasons. First, geographically distributed cloud instances can support location-based applications. Second, hybrid cloud instances can be used to implement a disaster recovery (DR) solution. Third, workloads can be moved or cloned between clouds for load balancing or maintenance purposes. Consequently, it has become more and more important for enterprises to manage and distribute workloads in a hybrid cloud environment.
As more and more vendors offer public PaaS services, there is a growing need for enterprises to manage their applications in a hybrid cloud that includes both private and public cloud instances. In such a hybrid cloud environment, it is important for the enterprise to scale out its on-premise applications to public PaaS instances. In general, the hybrid cloud requirements include application migration or cloning, geographic load-balancing, and disaster recovery (DR). Existing products address the need of the hybrid cloud at the IaaS layer. However, little has been done for the hybrid cloud at the PaaS layer. Although the hybrid cloud requirements for PaaS can be fulfilled by the IaaS-based products in theory, it is not efficient in practice to manage PaaS instances in the hybrid cloud via an IaaS approach. For a non-limiting example, in order to move an application from one PaaS instance to another, an IaaS solution would need to move all virtual machines (VMs) running on the source instance to the destination IaaS infrastructure. Since a typical PaaS instance may contain hundreds or thousands of VMs, moving all of the VMs from one instance to another at the IaaS layer is both time consuming and cost inefficient.